package com.example.bootdemo.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class StackDemo {
    // 测试方法
    public static void main(String[] args) {
        //  test1();
        //  Queue();
        // arrayLinke();
        ///arrayLinke1();
        test11();
    }

    public static void test11() {
        Date payTime = null;
        String time = "2021-07-30 15:14:38";
        String time1 = "yyyy-MM-DD HH:mm:ss";

        String time2 = "yyyyMMddHHmmss";

        SimpleDateFormat df = new SimpleDateFormat(time1);

        try {
            payTime = df.parse(time);
            System.out.println(payTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }

    public static void test1() {
        //声明一个栈对象，并向内压入三个元素
        Stack stack = new Stack();
        stack.push(1);
        stack.push(2);
        stack.push(3);
//判断是否为空栈
        System.out.println(stack.isEmpty());//输出：false
//使用peek()方法查询栈顶元素，使用pop()方法取出栈顶元素
        System.out.println(stack.peek());//输出：3
        System.out.println(stack.pop());//输出：3
        System.out.println(stack.peek());//输出：2
        System.out.println(stack.pop());//输出：2
        System.out.println(stack.peek());//输出：1
        System.out.println(stack.pop());//输出：1
        System.out.println(stack.isEmpty());//输出：true
    }

    public static void Queue() {
        //声明一个队列
        Queue queue = new LinkedList();
//先向队列中添加五个元素
        queue.add(1);
        queue.add(2);
        queue.add(3);
        queue.add(4);
        queue.add(5);
//移除并返回队列头部的元素
        System.out.println(queue.remove());//输出：1
//返回队列头部的元素
        System.out.println(queue.element());//输出：2
//添加一个元素并返回true，如果队列已满则返回false
        System.out.println(queue.offer(6));//输出：true
//返回队列头部的元素
        System.out.println(queue.peek());//输出：2
//返问并移除队列头部的元素
        System.out.println(queue.poll());//输出：2
        System.out.println(queue.poll());//输出：3
        System.out.println(queue.poll());//输出：4
        System.out.println(queue.poll());//输出：5
        System.out.println(queue.poll());//输出：6
    }

    public static void arrayLinke() {
        Integer index = 10000000;

        List<Integer> arrayList = new ArrayList<Integer>();
        List<Integer> linkedList = new LinkedList<Integer>();

        Long arrayStart = new Date().getTime();
        for (int i = 0; i < index; i++) {
            arrayList.add(i);
        }
        Long arrayEnd = new Date().getTime();

        Long linkedStart = new Date().getTime();
        for (int j = 0; j < index; j++) {
            linkedList.add(j);
        }
        Long linkedEnd = new Date().getTime();

        System.out.println("插入" + index + "条记录：");
        System.out.println("ArrayList耗时:" + (arrayEnd - arrayStart) + "毫秒");
        System.out.println("LinkedList耗时:" + (linkedEnd - linkedStart) + "毫秒");
    }

    public static void arrayLinke1() {
        //元素个数减少到10万即可看出效果
        Integer index = 100000;

        List<Integer> arrayList = new ArrayList<Integer>();
        List<Integer> linkedList = new LinkedList<Integer>();

        Long arrayStart = new Date().getTime();
        for (int i = 0; i < index; i++) {
            //其他代码不变，我们将每次遍历时添加新元素的位置固定为第一个
            arrayList.add(0, i);
        }
        Long arrayEnd = new Date().getTime();

        Long linkedStart = new Date().getTime();
        for (int j = 0; j < index; j++) {
            //其他代码不变，我们将每次遍历时添加新元素的位置固定为第一个
            linkedList.add(0, j);
        }
        Long linkedEnd = new Date().getTime();

        System.out.println("插入" + index + "条记录：");
        System.out.println("ArrayList耗时:" + (arrayEnd - arrayStart) + "毫秒");
        System.out.println("LinkedList耗时:" + (linkedEnd - linkedStart) + "毫秒");
    }
}
